<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>

    // new Object()
    // new Function ()
    // function fn () {}

    // 必须先执行函数定义, 后才能调用函数
    // 在执行我们的代码前已经先执行过Object, Function的函数的定义
    // JS引擎会先去执行它内置函数定义代码, 再执行我们的代码

    /* 
    function Function () {}

    Function.prototype.call = function () {}

    function Object () {}

    执行这些函数定义代码, 就会创建对应的内存结构
    */










    // JS内置了一些构造函数或对象: Function / Object / Array / String / Reg / Date / Math

    /* 
      function Function () {}
      Function.prototype.call = function () {}
      function Object () {}
      Object.prototype.toString = function () {}
      JS引擎在执行我们的代码前， 先执行它内部的代码： 定义了一些构造函数
    */
    // new Function ()
    function fn() {
      
    }

    /* Function的原型对象是一个函数 => 不可能是Object的实例 */
    /* 内部加上: Function.prototype.__proto__ = Object.prototype */
    console.log(Function.prototype.__proto__ === Object.prototype)
    console.log(Function.prototype, typeof Function.prototype)

    // 只有Function的实例才是函数, 其它任何函数的实例都不可能是函数

    console.log(Object.prototype.__proto__) // null

  </script>
</body>
</html>